<!doctype html>
<html lang="en"><head>
    <title>Ambari-Alert调研</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="../../css/theme.css"/>
    
</head>
<body>
        <div id="content" class="mx-auto"><header class="container mt-sm-5 mt-4 mb-4 mt-xs-1">
    <div class="row">
        <div class="col-sm-4 col-12 text-sm-right text-center pt-sm-4">
            <a href="../../" class="text-decoration-none">
                <img id="home-image" class="rounded-circle"
                    
                        src="../../images/avatar.png"
                    
                />
            </a>
        </div>
        <div class="col-sm-8 col-12 text-sm-left text-center">
            <h2 class="m-0 mb-2 mt-4">
                <a href="../../" class="text-decoration-none">
                    
                        KunYang
                    
                </a>
            </h2>
            <p class="text-muted mb-1">
                
                    Your Creative Subtitle
                
            </p>
            <ul id="nav-links" class="list-inline mb-2">
                
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../about/" title="About">About</a>
                    </li>
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../posts/" title="Posts">Posts</a>
                    </li>
                
                    <li class="list-inline-item">
                        <a class="badge badge-white " href="../../categories/" title="Categories">Categories</a>
                    </li>
                
            </ul>
            <ul id="nav-social" class="list-inline">
                
                    <li class="list-inline-item mr-3">
                        <a href="http://www.kunyang.com" target="_blank">
                            <i class="fab fa-github fa-1x text-muted"></i>
                        </a>
                    </li>
                
                    <li class="list-inline-item mr-3">
                        <a href="" target="_blank">
                            <i class="fab fa-linkedin-in fa-1x text-muted"></i>
                        </a>
                    </li>
                
                    <li class="list-inline-item mr-3">
                        <a href="" target="_blank">
                            <i class="fab fa-twitter fa-1x text-muted"></i>
                        </a>
                    </li>
                
                    <li class="list-inline-item mr-3">
                        <a href="" target="_blank">
                            <i class="fas fa-at fa-1x text-muted"></i>
                        </a>
                    </li>
                
            </ul>
        </div>
    </div>
    <hr />
</header>
<div class="container">
    <div class="pl-sm-4 ml-sm-5">
        <blockquote>
<p>数仓平台采用的是Ambari进行管理，Ambari中对各个服务组件提供了完善的监控机制，并且提供了详细的报警信息。但报警信息默认是需要登录Ambari-UI平台后才能看到，为了保障数仓平台的稳定性，需要及时的获取此部分报警信息并进行处理。
此wiki主要是记录了对Ambari-Alert组件进行调研的结果，包括Alert的机制、类型等，以及数仓将采用何种方式接入报警信息</p>
</blockquote>
<h1 id="ambari-alert-简介">Ambari Alert 简介</h1>
<h2 id="ambari-告警的基础概念">Ambari 告警的基础概念</h2>
<p>Ambari 为了帮助用户鉴别以及定位集群的问题，实现了告警（Alert）机制。在 Ambari 中预定了很多的告警，这些告警被用于监测集群的各个模块以及机器的状态。对于告警来说，主要有两个概念，一个是 Alert Definition，一个是 Alert Instance。顾名思义，Alert Definition 就是告警的定义，其中会定告警的检测时间间隔（interval）、类型（type）、以及阈值（threshold）等。Ambari 会读取告警的定义，然后创建对应的实例（instance）去定期执行这个告警。例如 MapReduce2 这个 Service 就定义了两个告警“History Server WEB UI”和“History Server Process”来定期检查 History Server 模块的状态。</p>
<p>终端用户可以在 WEB 中 Alert 的页面，浏览以及组织管理这些告警。如果告警名称太多，用户可以用过滤器筛选想要查找的告警。其实这些 WEB 中的显示，都是 Alert Definition，也就是告警的定义。用户可以点击具体的 Alert name 去查看或者修改 Alert 属性（例如 interval 和阈值）。在详细的告警页面里，可以看到该告警所有的 instance。每个 instance 都会严格的报告该 instance 的检查结果。Alert 的检查结果会以五种级别呈现，分别是 OK、WARNING，CRITICAL、UNKNOW 和 NONE。其中最常见的是前三种。</p>
<h2 id="ambari-中-alert-的类型">Ambari 中 Alert 的类型</h2>
<p>Ambari 中的 Alert 分为 5 种类型，分为 WEB、Port、Metric、Aggregate 和 Script。具体的区别见下面的表格。</p>
<table>
<thead>
<tr>
<th>类型</th>
<th>用途</th>
<th>告警级别</th>
<th>阀值是否可配</th>
<th>单位</th>
</tr>
</thead>
<tbody>
<tr>
<td>PORT</td>
<td>用来监测机器上的一个端口是否可用</td>
<td>OK, WARN, CRIT</td>
<td>是</td>
<td>秒</td>
</tr>
<tr>
<td>METRIC</td>
<td>用来监测 Metric 相关的配置属性</td>
<td>OK, WARN, CRIT</td>
<td>是</td>
<td>变量</td>
</tr>
<tr>
<td>AGGREGATE</td>
<td>用于收集其他某些 Alert 的状态</td>
<td>OK, WARN, CRIT</td>
<td>是</td>
<td>百分比</td>
</tr>
<tr>
<td>WEB</td>
<td>用于监测一个 WEB UI（URL）地址是否可用</td>
<td>OK, WARN, CRIT</td>
<td>否</td>
<td>无</td>
</tr>
<tr>
<td>SCRIPT</td>
<td>Alert 的监测逻辑由一个自定义的 python 脚本执行</td>
<td>OK, CRIT</td>
<td>否</td>
<td>无</td>
</tr>
</tbody>
</table>
<h2 id="修改alert报警指标">修改Alert报警指标</h2>
<p>每个Alert都有自己的报警指标，我们可以对不同的服务创建不同的Alert，对不同的Alert设置不同的报警指标。通常修改Alert报警指标有两种方式，可以通过Ambari Service的Web页面进行修改，也可以通过API接口进行修改。</p>
<h3 id="通过web页面修改alert">通过Web页面修改Alert</h3>
<p>登录Ambari后，找到Alert选项卡就可以看到现在所有的Alert。</p>
<ol>
<li>在Alert详细页面通过<code>Status</code>可以查看当前Alert指标的状态，具体状态有五种，分别是 OK、WARNING，CRITICAL、UNKNOW 和 NONE。其中最常见的是前三种。</li>
<li><code>Alert Definition Name</code>为Alert的具体的名称</li>
<li><code>Service</code>表示此Alert属于哪个具体的组件，如Ambari、HDFS、YARN</li>
<li><code>Last Status Changed</code>最后一次状态变更的时间，可以看到Alert状态变更的时间，比如变更成CRITICAL，5 days ago 代表5天前对应的服务出现了CRITICAL级别的异常；OK 3 days ago 代表3天前此Alert对应的服务变为正常状态。</li>
<li><code>State</code>此Label有两个属性值，分别为Enabled/Disabled，表示启用或者关闭此Alert</li>
</ol>
<p><img src="../img/ambari-alert.png" alt="image-20200415223858028"></p>
<p><a href="https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/alerts.md">https://github.com/apache/ambari/blob/trunk/ambari-server/docs/api/v1/alerts.md</a></p>

    </div>

            </div>
        </div><footer class="text-center pb-1">
    <small class="text-muted">
        
            &copy; Copyright 2020, 坤坤
        
        <br>
        Powered by <a href="https://gohugo.io/" target="_blank">Hugo</a>
        and <a href="https://github.com/austingebauer/devise" target="_blank">Devise</a>
    </small>
</footer>
</body>
</html>
